<?php
namespace app\api\controller;

use think\Controller;
use think\Db;
use think\Request;
use app\api\model\Production;
use app\api\model\Article as ArticleModel;
class Article extends Controller
{
    /**
     * 文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/list_1
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/list_1?page=2
     * 请求参数：
     * 名称 必填 
     * page  否 默认为第一页
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function list_1($page = '')
    {
        
        $page = $page? $page : 1;
        $data = Db::name('article')->limit(10)->page($page)->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    
    /**
     * 文章详情接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/details
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/details?a_id=1
     * 请求参数：
     * 名称          必填 
     * a_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function details($a_id)
    {
        $count = Db::name('article')->where('a_id',$a_id)->find();
        $newcount = $count['view']+1;
        Db::table('article')->where('a_id',$a_id)->update(['view' => $newcount]);
        // $data = Db::name('article a')
        //         ->join('user u','a.u_id = u.u_id')
        //         ->where('a_id',$a_id)
        //         ->select();
        $data = ArticleModel::with('user,comment.zhuiping')->where('a_id',$a_id)->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    /**
     * 添加文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/add
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/add
     * 请求参数：
     * 名称            必填   说明
     * title            是      标题      
     * introductory     是      简介
     * details          是      详情
     * u_id             是      用户id
     * a_type           是      文章类型（如：人像）
     * pic              是      文章封面
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
      */
    public function add()
    {
        $post = request()->param();
        
        $file = request()->file('pic');
       
        if($file)
        {
            $info = $file->rule('uniqid')->validate(['size' => 5242880, 'ext' => 'jpg,jpeg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'static' . DS .'img');
            if($info)
            {
                $pic = $info->getFilename(); 
            }
        }
        $request = Request::instance();
        $http = $request->domain();
        $src = "$http/zyd/public/static/img/$pic";
        $data=[
            'title'=>$post['title'],
            'introductory'=>$post['introductory'],
            'details'=>$post['details'],
            'view'=>0,
            'collect'=>0,
            'u_id'=>$post['u_id'],
            'a_type'=>$post['a_type'],
            'pic'=> $src,
        ];
        // dump($data);
        // exit;
       $hd = Db::table('article')->insert($data);
       if($hd)
            {
                return json(['code'=>1,'message'=>'发布成功']);
            }
            else{
                return json(['code'=>0,'message'=>'失败']);
            }
    }
    /**
     * 收藏文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/a_collect
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/a_collect
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function a_collect($a_id,$u_id)
    {
        $count = Db::name('article')->where('a_id',$a_id)->find();
        $newcount = $count['collect']+1;
        Db::table('article')->where('a_id',$a_id)->update(['collect' => $newcount]);
        $data = [
            'a_id' =>$a_id,
            'u_id' =>$u_id
        ];
        $res1 = Db::name('acollect')->where($data)->find();
        if($res1)
        {
            $sc = Db::table('acollect')->delete($res1['acollect_id']);
            if($sc)
            {
                return json(['code'=>1,'message'=>'成功']);
            }
            else
            {
                return json(['code'=>0,'message'=>'失败']);
            }
        }
        $res = Db::name('acollect')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'收藏成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'收藏失败']);
        }
    }
    /**
     * 点赞文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/a_like
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/a_collect
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function a_like($a_id,$u_id)
    {
        $count = Db::name('article')->where('a_id',$a_id)->find();
        $newcount = $count['collect']+1;
        Db::table('article')->where('a_id',$a_id)->update(['collect' => $newcount]);
        $data = [
            'a_id' =>$a_id,
            'u_id' =>$u_id
        ];
        $res1 = Db::name('alike')->where($data)->find();
        if($res1)
        {
            $sc = Db::table('alike')->delete($res1['alike_id']);
            if($sc)
            {
                return json(['code'=>1,'message'=>'成功']);
            }
            else
            {
                return json(['code'=>0,'message'=>'失败']);
            }
        }
        $res = Db::name('alike')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'点赞成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'点赞失败']);
        }
    }

    /**
     * 搜索文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/search
     * 请求方式：get/post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/search?page=2
     * 请求参数：
     * 名称 必填 
     * page  否 默认为第一页
     * name  是  搜索关键字
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     * data    文章信息
     */
    public function search($page = '',$name)
    {
        
        $page = $page? $page : 1;
        $data = Db::name('article')->where('title','like',"%{$name}%")->limit(10)->page($page)->select();
        if($data)
        {
            return json(['code'=>1,'message'=>'加载成功','data'=>$data]);
        }
        else
        {
            return json(['code'=>0,'message'=>'没有数据啦','data'=>$data]);
        }
    }
    /**
     * 评论文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/comment
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/comment?a_id=1&u_id=1&comment=哈哈
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
     * comment        是
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function comment()
    {
        $post = request()->param();
        $res = Db::name('user')->where('u_id',$post['u_id'])->find();
        $data = [
            'a_id' =>$post['a_id'],
            'u_id' =>$post['u_id'],
            'comment' =>$post['comment'],
            'name' =>$res['name'],
            'headpic' =>$res['headpic'],
            'time' =>date("Y-m-d h:i:s"),
        ];
        $res = Db::name('acomment')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'评论成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'失败']);
        }
    }
    /**
     * 追加评论文章接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/aacomment
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/aacomment?acomment_id=1&u_id=1&comment=哈哈
     * 请求参数：
     * 名称          必填 
     * acomment_id    是  评论id
     * u_id           是   追加评论人
     * comment        是   评论内容
    * 返回参数说明
     * 名称  说明
     * code   0失败，1成功
     * message 提示信息
     */
    public function aacomment()
    {
        $post = request()->param();
        $res = Db::name('user')->where('u_id',$post['u_id'])->find();
        $data = [
            'acomment_id' =>$post['acomment_id'],
            'u_id' =>$post['u_id'],
            'comment' =>$post['comment'],
            'name' =>$res['name'],
            'headpic' =>$res['headpic'],
            'time' =>date("Y-m-d h:i:s"),
        ];
        $res = Db::name('aacomment')->insertGetId($data);
        if($data)
        {
            return json(['code'=>1,'message'=>'评论成功']);
        }
        else
        {
            return json(['code'=>0,'message'=>'失败']);
        }
    }
    /**
     * 点赞收藏关注文章判断接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/judge
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/judge?u_id=1&a_id=1
     * 请求参数：
     * 名称          必填 
     * a_id           是
     * u_id           是
    * 返回参数说明
     * 名称  说明
     * dianzan   0已经点赞，1未点赞
     * shoucang  0已经收藏，1未收藏
     */
    public function judge()
    {
        $post = request()->param(); 
        $data = [
            'a_id' =>$post['a_id'],
            'u_id' =>$post['u_id'],
        ];
        $res1 = Db::name('alike')->where($data)->find();
        //已经点赞
        if($res1)
        {
            $dianzan =0;
        }
        else
        {
            $dianzan =1;
        }
        $res2 = Db::name('acollect')->where($data)->find();
        //已经点赞
        if($res2)
        {
            $shoucang =0;
        }
        else
        {
            $shoucang =1;
        }
        return json(['dianzan'=>$dianzan,'shoucang'=>$shoucang]);
    }
    /**
     * 关注用户判断接口
     * 接口地址:http://localhost/zyd/public/index.php/api/article/guanzhu
     * 请求方式：post
     * 请求示例：http://localhost/zyd/public/index.php/api/article/guanzhu?u_id=1&b_id=2
     * 请求参数：
     * 名称          必填 
     * b_id           是  被关注用户id
     * u_id           是   点击关注用户id
    * 返回参数说明
     * 名称  说明
     * guanzhu   0已经关注，1未关注
     */
    public function guanzhu()
    {
        $post = request()->param(); 
        $data = [
            'b_id' =>$post['b_id'],
            'u_id' =>$post['u_id'],
        ];
        $res1 = Db::name('care')->where($data)->find();
        //已经点赞
        if($res1)
        {
            $guanzhu =0;
        }
        else
        {
            $guanzhu =1;
        }
        
        return json(['guanzhu'=>$guanzhu]);
    }
}
